Popup nach verbuchten Daten

Trotz UI5, Webservices und HANA sind Verbuchungsbausteine nach wie vor ein wichtiger Bestandteil eines SAP-Systems. Ein Verbuchungsbaustein ist ein Funktionsbaustein mit der Eigenschaft “Verbucher”.

Eigenschaften eines Funktionsbausteins

Ein Verbuchungsbaustein kann wie ein ganz normaler Funktionsbaustein aufgerufen werden. Allerdings kann ein Verbuchungsbaustein keine Rückgabeparameter besitzen, denn mit Aufruf in der Verbuchung – Zusatz IN UPATE TASK – wird die Ausführung an einen anderen Prozess übergeben. Läuft bei einem Verbuchungsbaustein etwas schief, dann gibt es einen Kurzdump.

Verbucher

Die Verbucherfunktionalität wird in erster Linie dafür genutzt, um das aufwändige Speichern im Hintergrund durchführen zu lassen, so dass der Anwender schnell weiter arbeiten kann. Die Daten, die an die Verbuchung übergeben werden, müssen “wasserdicht”, also in sich stimmig und korrekt sein. Es geht also nicht mehr um Prüfungen, sondern um das reine Speichern der Daten. Je nach Prozess kann die Speicherung ziemlich lange dauern. In SAP-Standardanwendungen hat man manchmal das Phänomen, dass man einen Beleg speichert und ihn sofort wieder ändern möchte. Der Beleg befindet sich jedoch noch in der Verbuchung und ist noch gesperrt. 

V1- und V2-Verbucher

Es gibt V1-Verbucher und V2-Verbucher. Die V1-Verbucher enthalten wichtige Daten, die in jedem Fall verbucht werden müssen und die auch schnellstmöglich verbucht werden sollen. V2-Verbucher werden eingesetzt für zum Beispiel das Fortschreiben von Statistikdaten. Wenn die Statistikdaten nicht vollständig sind, ist es nicht so schlimm. Es rechtfertigt zum Beispiel in keinem Fall, dass der zugehörige Beleg deswegen nicht verbucht werden kann.

V1-Verbucher haben Vorrang vor V2-Verbuchern. Ein V2-Verbucher wird also erst dann ausgeführt, wenn alle zugehörigen V1-Verbucher erfolgreich verbucht worden sind. Bricht ein V1-Prozess ab, dann werden alle zugehörigen Bausteine, die sich in der Verbuchung befinden, ebenfalls abgebrochen.

V2-Verbucher missbrauchen

Bei einigen Prozessen kann das Verbuchen der Daten extrem lange dauern und deswegen sinnvoll sein, den Benutzer nach Beendigung des Buchungsprozesses zu informieren. 

Hierfür kann man den V2-Verbucher sozusagen missbrauchen. Man startet einfach die notwendigen V1-Verbucher und registriert am Ende noch einen V2-Verbucher, der mit Hilfe des Baustein TH_POPUP eine Meldung ausgibt. 

TH_POPUP

Der Funktionsbaustein TH_POPUP ist ein kleines Systempopup, dass einen Benutzer sofort informiert. Der Benutzer muss dafür im SAP-System angemeldet sein.

TH_POPUP in Aktion

Du kannst also diesen TH_POPUP in einem V2-Verbuchungsbaustein aufrufen:

  CALL FUNCTION 'TH_POPUP'
    EXPORTING
      client  = sy-mandt
      user    = sy-uname
      message = 'Verbuchung beendet!'.

Durch die Reihenfolge ist sichergestellt, dass das Popup erst aufgerufen wird, nachdem alle V1-Verbucher, also der Verbuchungsprozess ansich, beendet wurde.

Aufruf

Um die Verbuchung anzustoßen, muss zwingend ein COMMIT WORK erfolgen. Der implizit am Ende eines Programms ausgeführte Commit ist nicht ausreichend!

  CALL FUNCTION 'Z_TEST_BOOK' IN UPDATE TASK.
  CALL FUNCTION 'Z_TEST_BOOK_POPUP' IN UPDATE TASK.
  COMMIT WORK.

Enno Wulff